#include "gd32f4xx.h"
#include "systick.h"
#include "timer.h"
#include "usartconf.h"
extern uint16_t tim1;
extern uint16_t tim2;
__asm void enableAllInt(void)
{
	CPSIE I
	BX    LR
}
__asm void disableAllInt(void)
{
	CPSID I
	BX    LR	  
}
int main(void)
{
	enableAllInt();
	//disableAllInt();
	//SystemInit();
	//rcu_osci_on(RCU_IRC32K);
	//rcu_osci_stab_wait(RCU_IRC32K);
	nvic_vector_table_set(NVIC_VECTTAB_FLASH,0x20000);
	nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
	//enableAllInt();
	//disableAllInt();
	
	
	//NVIC_SystemReset();
	
	//timer_deinit(TIMER1);
	//timer_deinit(TIMER2);
	//usart_deinit(USART5);
	//usart_config();
	//systick_config();
	//timer1_config();
	usart_config();
	
	uint32_t flag_test=5;
	uint32_t flag_key;
	uint32_t flag_test1=7;
	rcu_periph_clock_enable(RCU_GPIOA);
	gpio_mode_set(GPIOA,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_PIN_4);
	gpio_output_options_set(GPIOA,GPIO_OTYPE_PP,GPIO_OSPEED_200MHZ,GPIO_PIN_4);
	gpio_bit_set(GPIOA,GPIO_PIN_4);
	gpio_bit_reset(GPIOA,GPIO_PIN_4);
	//enableAllInt();
	//rcu_periph_clock_enable(RCU_TIMER2);
	timer1_config();
	timer2_config();
	//timer8_config();
//	NVIC_EnableIRQ(TIMER1_IRQn);
//	NVIC_EnableIRQ(TIMER2_IRQn);
//	rcu_periph_clock_enable(RCU_GPIOC);
//	gpio_mode_set(GPIOC,GPIO_MODE_OUTPUT,GPIO_PUPD_PULLUP,GPIO_PIN_13);
//	gpio_output_options_set(GPIOC,GPIO_OTYPE_PP,GPIO_OSPEED_200MHZ,GPIO_PIN_13);
//	gpio_bit_set(GPIOC,GPIO_PIN_13);
//	gpio_bit_reset(GPIOC,GPIO_PIN_13);
//	
//	rcu_periph_clock_enable(RCU_GPIOB);
//	gpio_mode_set(GPIOB,GPIO_MODE_INPUT,GPIO_PUPD_PULLUP,GPIO_PIN_9);

//	gpio_output_options_set(GPIOB,GPIO_OTYPE_PP,GPIO_OSPEED_200MHZ,GPIO_PIN_9);
//	gpio_bit_reset(GPIOB,GPIO_PIN_9);
//	gpio_bit_set(GPIOB,GPIO_PIN_9);
		//enableAllInt();
		//disableAllInt();
	while(1)
	{
		//usart_data_transmit(USART5,tim2);
		//usart_data_transmit(USART5,tim1);
		//delay_ms(500);
		//usart_data_transmit(USART5,tim2);
		//gpio_bit_toggle(GPIOA,GPIO_PIN_4);
		//gpio_bit_reset(GPIOA, GPIO_PIN_4);
		while(1){
			if(tim2>10)
			{
				gpio_bit_set(GPIOA,GPIO_PIN_4);
			}
			usart_data_transmit(USART5,tim1);
		}
		delay_ms(500);
		gpio_bit_set(GPIOA, GPIO_PIN_4);
		delay_ms(500);
//		if(tim2 > 50)
//		{
//			//tim1 = 0;
//			gpio_bit_reset(GPIOA, GPIO_PIN_4);
//		}
		//usart_data_transmit(USART5,flag_test1);
		//usart_data_transmit(USART5,flag_test);
		//while(1);
		
	}
}
		//gpio_bit_set(GPIOC, GPIO_PIN_13);      
		//delay_ms(500);
		//gpio_bit_reset(GPIOC, GPIO_PIN_13);
		//gpio_bit_set(GPIOA, GPIO_PIN_4);
		//delay_ms(500);
//if(gpio_input_bit_get(GPIOB,GPIO_PIN_9) ==RESET){
//			//delay_ms(20);
//			//if(gpio_input_bit_get(GPIOB,GPIO_PIN_9) ==RESET){
//				//gpio_bit_set(GPIOA, GPIO_PIN_4);
//				//gpio_bit_toggle(GPIOA,GPIO_PIN_4);
//				//delay_ms(200);
//				flag_key=0xff;
//			//}
//			//gpio_bit_reset(GPIOA, GPIO_PIN_4);
//		}
//		else if(gpio_input_bit_get(GPIOB,GPIO_PIN_9) ==SET){
////			gpio_bit_reset(GPIOA, GPIO_PIN_4);
////			delay_ms(2000);
////			gpio_bit_set(GPIOA, GPIO_PIN_4);
//			flag_key = 0x11;
//		}
//		usart_data_transmit(USART5,flag_test);
//		delay_ms(200);